Various data processing systems have been developed including storage systems, cellular telephone systems, and radio transmission systems. In each of the systems data is transferred from a sender to a receiver via some medium. For example, in a storage system, data is sent from a sender (i.e., a write function) to a receiver (i.e., a read function) via a storage medium. As information is stored or transmitted in the form of digital data, errors may be introduced that, if not corrected, can corrupt the data and render the information unusable. The effectiveness of any transfer is impacted by any losses in data caused by various factors. Many types of data processors have been developed to detect and correct errors in digital data. For example, data decoders such as Low Density Parity Check (LDPC) decoders may be used to decode the values of data bits or multi-bit symbols retrieved from storage or transmission systems.
Some LDPC data decoders implement error correction techniques such as bit or symbol flipping. In such decoders, if conventional data decoding fails to determine the correct data values and satisfy parity checks, the value of some bits or symbols in a block of data may be changed or flipped during a decoding process in an attempt to determine the correct data values. However, bit or symbol flipping may result in output data that is still incorrect despite satisfying parity checks in the decoder.
A need therefore remains for a data processing system with improved error detection and correction.